package models

import (
	"gorm.io/plugin/soft_delete"
	"time"
)

// SqlTimeFields 数据库时间字段集
type SqlTimeFields struct {
	CreatedAt *time.Time            `json:"created_at,omitempty" gorm:"default:current_timestamp(3);<-:false"`
	UpdatedAt *time.Time            `json:"updated_at,omitempty" gorm:"default:current_timestamp(3)"`
	DeletedAt soft_delete.DeletedAt `json:"deleted_at,omitempty" gorm:"default:0;index:idx_deleted" swaggertype:"integer"` //=0未删除，>0为删除时间
}

// SqlCreateTimeFields 数据库时间字段集(只有创建时间)
type SqlCreateTimeFields struct {
	CreatedAt *time.Time `json:"created_at,omitempty" gorm:"default:current_timestamp(3);<-:false"`
}

// SqlUpdateTimeFields 数据库时间字段集(只有更新时间)
type SqlUpdateTimeFields struct {
	UpdatedAt *time.Time `json:"updated_at,omitempty" gorm:"default:current_timestamp(3)"`
}

// SqlDeleteTimeFields 数据库时间字段集(只有删除时间)
type SqlDeleteTimeFields struct {
	DeletedAt soft_delete.DeletedAt `json:"deleted_at,omitempty" gorm:"default:0;index:idx_deleted" swaggertype:"integer"` //=0未删除，>0为删除时间
}

// SqlSaasTenantFields saas支持需要的字段
type SqlSaasTenantFields struct {
	TenantId int64 `json:"tenant_id,omitempty" gorm:"default:0;index"`
}
